#define  _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

//随机数生成
//1.rand 函数
// 2.srand 函数
// 3.time 函数
 
//1.rand 函数  ：是生成随机数的，
// rand 函数会返回一个伪随机数，这个随机数的范围是0 - RAND_MAX，一般的编译器RAND_MAX是32767
//rand 函数默认“种子”是1

#include <stdlib.h>  //rand  函数的头文件

int main()
{
	//默认“种子”是1
	int r = rand();
	printf("%d\n", r);

	r = rand();
	printf("%d\n", r);

	r = rand();
	printf("%d\n", r);

	r = rand();
	printf("%d\n", r);

	r = rand();
	printf("%d\n", r);

	return 0;
}

//2. srand  函数 ：用来初始化随机数的的生成器的,修改“种子”的默认值
// 因为“种子”一样所以每次生成的“随机数”一样
//格式: void srand (unsigned int seed);

#include <stdlib.h>
int main()
{
	srand(2);
	//默认“种子”是1
	int r = rand();
	printf("%d\n", r);

	r = rand();
	printf("%d\n", r);

	r = rand();
	printf("%d\n", r);

	r = rand();
	printf("%d\n", r);

	r = rand();
	printf("%d\n", r);

	return 0;
}

//3.time 函数 ：可以获得一个时间戳，time 函数 有个头文件是time.h
//如果timer 是 NULL ，就只返回这个时间的差值，time 函数的时间差也叫时间戳
//格式： time_t time(time_t* timer)


#include <stdlib.h>
#include <time.h>

//NULL  -- 空指针

int main()
{
	srand((unsigned int)time(NULL));//因为时间戳不一样，所以生成的随机数不一样
	//默认“种子”是1
	int r = rand();
	printf("%d\n", r);

	r = rand();
	printf("%d\n", r);

	r = rand();
	printf("%d\n", r);

	r = rand();
	printf("%d\n", r);

	r = rand();
	printf("%d\n", r);

	return 0;
}

//猜数字生成一个 1 - 100的随机数

int main()
{
	srand((unsigned int)time(NULL));//因为时间戳不一样，所以生成的随机数不一样
	//默认“种子”是1
	int r = rand()% 100 +1 ;
	printf("%d\n", r);

	r = rand() % 100 + 1;
	printf("%d\n", r);

	r = rand() % 100 + 1;
	printf("%d\n", r);

	r = rand() % 100 + 1;
	printf("%d\n", r);

	r = rand() % 100 + 1;
	printf("%d\n", r);

	return 0;
}


//猜数字游戏正式开始
//生成随机数之前要调用srand来设置随机数的生成起点
//srand函数只需要调用一次就可以了，不能频繁的调用

void menu()//创建函数
{
	printf("********************\n");
	printf("***** 1.paly *******\n");
	printf("***** 0.exit *******\n");
	printf("********************\n");
}

void game()
{
	//1.生成随机数
	int r = rand() % 100 + 1;

	//2.猜数字
	int guess = 0;
	int count = 5;//最多猜5次
	while (count)
	{
		printf("你还有%d次机会\n", count);
		printf("请猜数字:>");
		scanf("%d", &guess);
		if (guess < r)
			printf("猜小了\n");
		else if (guess > r)
			printf("猜大了\n");
		else
		{
			printf("恭喜你猜对了，随机数是: %d\n",r);
			break;
		}
		count--;
	}
	if (0 == count)
	{
		printf("机会使用完了，你失败了，正确的数字是:%d\n", r);
	}
}

int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));
	do
	{
		//打印简易菜单
		menu();//调用函数

		printf("请选择:>");
		scanf("%d", &input);

		switch(input)
		{
			case 1:
				printf("猜数字\n");
				game();
				break;
			case 0:
				printf("退出游戏\n");
				break;
			default:
				printf("选择错误，请重新选择！\n");
				break;

		}

	} while (input);

	return 0;
}